<?php

class MercadoController extends Zend_Controller_Action
{

	public function indexAction(){
		
	}
	
	
	public function listarAction(){
		$this->_helper->viewRenderer->setNoRender();
		
	}
	
	
	public function criarAction(){
		
		if (!is_null($this->getParam('nm_mercado'))){
			$tRede = new DbTable_RedeMercado();
			$tMercado = new DbTable_Mercado();
			$tEndereco = new DbTable_Endereco();
			$tLocalidade = new DbTable_Localidade();
			$tProduto = new DbTable_Produto();
			$tProdutoMercado = new DbTable_ProdutoMercado();
                        $tCoordenada = new DbTable_Coordenada();
                        
                        $coordenada = $tCoordenada->createRow($this->getAllParams());
                        $coordenada->tp_coordenada = TipoCoordenada::LOCALIZACAO_MERCADO;
                        $idCoordenada = $coordenada->save();
                        
			if (!($idRede = DbTable_RedeMercado::hasRede($this->getParam('nm_rede_mercado')))){
				$redeMercado = $tRede->createRow();
				$redeMercado->nm_rede_mercado = strtoupper($this->getParam('nm_rede_mercado'));
				
				$idRede = $redeMercado->save();
			}
			
			if (!($idLocalidade = DbTable_Localidade::hasLocalidade($this->getParam('sg_uf'), $this->getParam('nm_cidade')))){
				$localidade = $tLocalidade->createRow();
				$localidade->sg_uf = strtoupper($this->getParam('sg_uf'));
				$localidade->nm_cidade = strtoupper($this->getParam('nm_cidade'));
			
				$idLocalidade = $localidade->save();
			}
                        
			if (!($idEndereco = DbTable_Endereco::hasEndereco($this->getParam('nm_logradouro'), $this->getParam('nr_numero'), $this->getParam('ds_complemento')))){
				$tEndereco = $tEndereco->createRow();
				$tEndereco->nm_logradouro = strtoupper($this->getParam('nm_logradouro'));
				$tEndereco->nr_numero = $this->getParam('nr_numero') == '' ? '0' : strtoupper($this->getParam('nr_numero'));
				$tEndereco->ds_complemento = $this->getParam('ds_complemento') == '' ? '0' : strtoupper($this->getParam('ds_complemento'));
				$tEndereco->nr_cep = $this->getParam('nr_cep') == '' ? '0' : str_replace('-', '', $this->getParam('nr_cep'));
				$tEndereco->nm_bairro = strtoupper($this->getParam('nm_bairro'));
				$tEndereco->id_localidade = $idLocalidade;
									
				$idEndereco = $tEndereco->save();
			}
			
			if (!($idMercado = DbTable_Mercado::hasMercado($this->getParam('nm_mercado')))){
				$tMercado = $tMercado->createRow();
				$tMercado->nm_mercado = strtoupper($this->getParam('nm_mercado'));
				$tMercado->id_rede_mercado = $idRede;
				$tMercado->id_endereco = $idEndereco;
                                $tMercado->id_coordenada = $idCoordenada;
				$tMercado->st_mercado = TipoBloqueio::DESBLOQUEADO;
                                
				$idMercado = $tMercado->save();
				
				foreach ($tProduto->fetchAll() as $produto) {
					$produtoMercado = $tProdutoMercado->createRow();
					$produtoMercado->vl_produto_mercado = 0;
					$produtoMercado->dt_ultima_atualizacao = date('d/m/Y');
					$produtoMercado->id_produto = $produto->id_produto;
					$produtoMercado->id_mercado = $idMercado;
					$produtoMercado->save();
				}
				
				$this->redirect("/mercado/add-mercado-preferido/message/".Messages::MERCADO_CRIADO);
			}else{
				$this->redirect("/mercado/add-mercado-preferido/message/".Messages::MERCADO_JAH_EXISTE);
			}
		}
	}
	
	
	public function editarAction(){
	
		$tMercado = new DbTable_Mercado();
		$tCoordenada = new DbTable_Coordenada();
		$mercado = $tMercado->find($this->getParam('id'))->current();	
		$endereco = $mercado->getEndereco();
		$rede = $mercado->getRede();
		$coordenada = is_null($mercado->getCoordenada()) ? $tCoordenada->createRow() : $mercado->getCoordenada();;
		$localidade = $endereco->getLocalidade();
		
		if ($this->getRequest()->getPost() == array()){
			$mercado = $tMercado->find($this->getParam('id'))->current();
				
			$this->view->mercado = $mercado;
			$this->view->endereco = $endereco;
			$this->view->rede = $rede;
			$this->view->coordenada = $coordenada;
			$this->view->localidade = $localidade;
		}else{
			$coordenada->vl_latitude = $this->getParam('vl_latitude');
			$coordenada->vl_longitude = $this->getParam('vl_longitude');
                        $coordenada->tp_coordenada = TipoCoordenada::LOCALIZACAO_MERCADO;
			$idCoordenada = $coordenada->save();
			
			$rede->nm_rede_mercado = strtoupper($this->getParam('nm_rede_mercado'));
			$idRedeMercado = $rede->save();
			
			$mercado->nm_mercado = strtoupper($this->getParam('nm_mercado'));
			$mercado->id_rede_mercado = $idRedeMercado;
			$mercado->id_coordenada = $idCoordenada;
			$mercado->save();
			
			$localidade->sg_uf = strtoupper($this->getParam('sg_uf'));
			$localidade->nm_cidade = strtoupper($this->getParam('nm_cidade'));
			$idLocalidade = $localidade->save();
			
			$endereco->nr_cep = $this->getParam('nr_cep') == '' ? '0' : str_replace('-', '', $this->getParam('nr_cep'));
			$endereco->nm_logradouro = strtoupper($this->getParam('nm_logradouro'));
			$endereco->nr_numero = strtoupper($this->getParam('nr_numero'));
			$endereco->ds_complemento = strtoupper($this->getParam('ds_complemento'));
			$endereco->nm_bairro = strtoupper($this->getParam('nm_bairro'));
			$endereco->id_localidade = $idLocalidade;
			$endereco->save();
			

			$this->redirect("/usuario/board/message/".Messages::MERCADO_EDITADO_SUCESSO);
		}
		

	}
	
	
	public function bloquearAction(){
		$this->_helper->viewRenderer->setNoRender();
                $tMercado = new DbTable_Mercado();
                
                $id = $this->getParam('id');
                $mercado = $tMercado->find($id)->current();
                
                if ($mercado->st_mercado == TipoBloqueio::BLOQUEADO) $mercado->st_mercado = TipoBloqueio::DESBLOQUEADO;
                else $mercado->st_mercado = TipoBloqueio::BLOQUEADO;
                
                $mercado->save();
                                
                $this->redirect('/mercado/add-mercado-preferido/message/' . Messages::MERCADO_EDITADO_SUCESSO);
	}
        
        
		public function addMercadoPreferidoAction(){
			
			$tMercado = new DbTable_Mercado();
			$session = new Zend_Session_Namespace('role');
			$usuario = DbTable_Usuario::buscarUsuarioPorId($session->idUsuario);
						
			if (!is_null($this->getParam('idMercado'))){
				if (count($usuario->getMercadosPreferidos()) == 3){
					$this->redirect("/mercado/add-mercado-preferido/message/".Messages::MERCADO_PREFERIDO_LIMITE);
				}
				
				$tMercadoPreferido = new DbTable_MercadoPreferido();
				$mercadoPreferido = $tMercadoPreferido->createRow();
				$mercadoPreferido->id_usuario = $session->idUsuario;
				$mercadoPreferido->id_mercado = $this->getParam('idMercado');
				$mercadoPreferido->save();
				$this->redirect("/mercado/add-mercado-preferido/message/".Messages::MERCADO_PREFERIDO_ADD_SUCESSO);
			}
			
			if (!is_null($this->getParam('message'))){
				$this->view->message = $this->getParam('message');
			}
			            
            $this->view->idUsuario = $session->idUsuario;
            $this->view->mercados = $tMercado->fetchAll($tMercado->select()->order('id_mercado ASC'));
        }

	
	public function removeMercadoPreferidoAction() {
		$session = new Zend_Session_Namespace('role');
		
		$tMercadoPreferido = new DbTable_MercadoPreferido();
		$mercadoPreferido = $tMercadoPreferido->fetchAll(array('id_mercado = (?)' => $this->getParam('idMercado'), 'id_usuario = (?)' => $session->idUsuario))->current();
		
		$mercadoPreferido->delete();
		
		if (is_null($this->getParam('return')))
			$this->redirect("/mercado/add-mercado-preferido/message/".Messages::MERCADO_PREFERIDO_REMOVE_SUCESSO);
		else
			$this->redirect(str_replace('_', '/', $this->getParam('return')));
	}
        
        
        public function listInMapAction(){
           //$this->_helper->layout->disableLayout();
        }
        
        
        public function ajaxBuscarCoordenadasAction(){
            $this->_helper->viewRenderer->setNoRender();
            $this->_helper->layout->disableLayout();
            
            $tCoordenadas = new DbTable_Coordenada();
            $i = 0;
            
            foreach ($tCoordenadas->fetchAll(array('tp_coordenada = (?)' => TipoCoordenada::LOCALIZACAO_MERCADO)) as $coordenada) {
               
                $mercado = $coordenada->findDependentRowset('DbTable_Mercado')->current();
                
                $coordenadas[$i][] = is_null($mercado->nm_mercado) ? '' : $mercado->nm_mercado;
                $coordenadas[$i][] = $coordenada->vl_latitude;
                $coordenadas[$i][] = $coordenada->vl_longitude;
                $coordenadas[$i][] = $i;
                 ++$i;
            }
            
            echo json_encode($coordenadas);
        }


	
}

